package com.yonyou.pmclouds.basecom.async;

import lombok.Getter;
import lombok.Setter;

import javax.persistence.Table;
import javax.persistence.Transient;
import java.io.Serializable;
import java.util.Date;
import java.util.Map;

/**
 * 异步调用信息记录类，记录调用的状态和用于恢复执行的信息
 */
@Getter
@Setter
@Table(name = "pm_async_info")
public class AsyncInvocationInfo implements Serializable {
    /**
     * 调用Id，
     */
    private String invocationId;
    /**
     * 触发调用的租户
     */
    private String tenantId;
    /**
     * 触发调用的用户
     */
    private String userId;

    /**
     * 调用方业务名称
     */
    private String buzi;
    /**
     * 调用的执行类
     */
    private String executionClass;

    /**
     * 业务扩展Id
     */
    private String extId;
    /**
     * 简单的调用Info，用于重新调用时的快速恢复
     */
    private String simpleInfo;
    /**
     * 不持久化的业务额外信息
     */
    @Transient
    private transient Map<String, Object> additionInfo;
    /**
     * 业务信息是否完备，用于在injvm调用时，直接跳过resume阶段
     */
    @Transient
    private transient Boolean ready;
    /**
     * 调用提交时间
     */
    private Date submitTime;
    /**
     * 调用结束时间
     */
    private Date endTime;
    /**
     * 当前调用状态（由框架预定义好）
     */
    private int state;
    /**
     * 当前的扩展调用状态，由业务定义
     */
    private String stateExt;
    /**
     * 需要记录下来的信息
     */
    private String msg;
    /**
     * 如果有后续业务，后续业务的Id
     */
    private String nextId;
    /**
     * 类似于changeFlag的标记
     */
    private String lastUpdateFlag;

}
